﻿using System;
using System.Threading.Tasks;

namespace MaterialTypeRecognition.Shell.AuthenticationServices
{
    internal interface IAuthenticationService
    {
        public bool HasAuthentication { get; }

        public EventHandler? UnauthenticateEvent { get; set; }

        public EventHandler? OPNAuthenticateEvent { get; set; }

        public EventHandler? OPNMonitorAuthenticateEvent { get; set; }

        public EventHandler? MEAuthenticateEvent { get; set; }

        public EventHandler? PEAuthenticateEvent { get; set; }

        public EventHandler? AdminAuthenticateEvent { get; set; }

        public Task UnauthenticateAsync();

        Task<bool> AuthenticateAsync(string password);

        void Dispose();

        bool OPNAuthenticate();

        bool OPNMonitorAuthenticate();

        bool MEAuthenticate();

        bool PEAuthenticate();

        bool AdminAuthenticate();
    }
}